#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <stdarg.h>
#include <assert.h>
#include <ctype.h>

#include "ILexer.h"
#include "Scintilla.h"
#include "SciLexer.h"

#include "PropSetSimple.h"
#include "WordList.h"
#include "LexAccessor.h"
#include "Accessor.h"
#include "LexerModule.h"
#include "LexerBase.h"
#include "LexerNoExceptions.h"

#ifdef SCI_NAMESPACE
using namespace Scintilla;
#endif

int  LexerNoExceptions::PropertySet( const char *key, const char *val ) {
  try {
    return LexerBase::PropertySet( key, val );
  } catch( ... ) {
  }
  return -1;
}

int  LexerNoExceptions::WordListSet( int n, const char *wl ) {
  try {
    return LexerBase::WordListSet( n, wl );
  } catch( ... ) {
  }
  return -1;
}

void  LexerNoExceptions::Lex( unsigned int startPos, int length, int initStyle, IDocument *pAccess ) {
  try {
    Accessor astyler( pAccess, &props );
    Lexer( startPos, length, initStyle, pAccess, astyler );
    astyler.Flush();
  } catch( ... ) {
    pAccess->SetErrorStatus( SC_STATUS_FAILURE );
  }
}
void  LexerNoExceptions::Fold( unsigned int startPos, int length, int initStyle, IDocument *pAccess ) {
  try {
    Accessor astyler( pAccess, &props );
    Folder( startPos, length, initStyle, pAccess, astyler );
    astyler.Flush();
  } catch( ... ) {
    pAccess->SetErrorStatus( SC_STATUS_FAILURE );
  }
}
